home *** CD-ROM | disk | FTP | other *** search
- /*
- XCmdGlue.c Functions for calling all standard HyperCard callback
- routines from C. This file derived from Pascal interface.
-
- Note that the arguments are slightly different than Pascal. The first
- argument is always a pointer to the parameter block that HyperCard
- passed to the XCMD or XFCN.
-
- ©Apple Computer, Inc. 1987
- All Rights Reserved.
- */
-
- /*
- Includes
- Note these header files are for THINK-C development.
- */
-
- #include <pascal.h>
- #include <MacTypes.h>
- #include "HyperXCmd.h"
-
- pascal void SendCardMessage (paramPtr, msg)
- XCmdBlockPtr paramPtr;
- StringPtr msg;
- {
- paramPtr->inArgs[0] = (long) msg;
- paramPtr->request = xreqSendCardMessage;
- DoJsr (paramPtr);
- } /*- proc-end: SendCardMessage -*/
-
- pascal Handle EvalExpr (paramPtr, expr)
- XCmdBlockPtr paramPtr;
- StringPtr expr;
- {
- paramPtr->inArgs[0] = (long) expr;
- paramPtr->request = xreqEvalExpr;
- DoJsr (paramPtr);
- return (Handle) paramPtr->outArgs[0];
- } /*- proc-end: EvalExpr -*/
-
- pascal long StringLength (paramPtr, strPtr)
- XCmdBlockPtr paramPtr;
- StringPtr strPtr;
- {
- paramPtr->inArgs[0] = (long) strPtr;
- paramPtr->request = xreqStringLength;
- DoJsr (paramPtr);
- return (long) paramPtr->outArgs[0];
- } /*- proc-end: StringLength -*/
-
- pascal Ptr StringMatch (paramPtr, pattern, target)
- XCmdBlockPtr paramPtr;
- StringPtr pattern;
- Ptr target;
- {
- paramPtr->inArgs[0] = (long) pattern;
- paramPtr->inArgs[1] = (long) target;
- paramPtr->request = xreqStringMatch;
- DoJsr (paramPtr);
- return (Ptr) paramPtr->outArgs[0];
- } /*- proc-end: StringMatch -*/
-
- pascal void SendHCMessage (paramPtr, msg)
- XCmdBlockPtr paramPtr;
- StringPtr msg;
- {
- paramPtr->inArgs[0] = (long) msg;
- paramPtr->request = xreqSendHCMessage;
- DoJsr (paramPtr);
- } /*- proc-end: SendHCMessage -*/
-
- pascal void ZeroBytes (paramPtr, dstPtr, Count)
- XCmdBlockPtr paramPtr;
- Ptr dstPtr;
- long Count;
- {
- paramPtr->inArgs[0] = (long) dstPtr;
- paramPtr->inArgs[1] = (long) Count;
- paramPtr->request = xreqZeroBytes;
- DoJsr (paramPtr);
- } /*- proc-end: ZeroBytes -*/
-
- pascal Handle PasToZero (paramPtr, pasStr)
- XCmdBlockPtr paramPtr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long) pasStr;
- paramPtr->request = xreqPasToZero;
- DoJsr (paramPtr);
- return (Handle) paramPtr->outArgs[0];
- } /*- proc-end: PasToZero -*/
-
- pascal void ZeroToPas (paramPtr, zeroPtr, pasStr)
- XCmdBlockPtr paramPtr;
- char *zeroPtr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long) zeroPtr;
- paramPtr->inArgs[1] = (long) pasStr;
- paramPtr->request = xreqZeroToPas;
- DoJsr (paramPtr);
- } /*- proc-end: ZeroToPas -*/
-
- pascal long StrToLong (paramPtr, strPtr)
- XCmdBlockPtr paramPtr;
- Str31 *strPtr;
- {
- paramPtr->inArgs[0] = (long) strPtr;
- paramPtr->request = xreqStrToLong;
- DoJsr (paramPtr);
- return (long) paramPtr->outArgs[0];
- } /*- proc-end: StrToLong -*/
-
- pascal long StrToNum (paramPtr, strPtr)
- XCmdBlockPtr paramPtr;
- Str31 *strPtr;
- {
- paramPtr->inArgs[0] = (long) strPtr;
- paramPtr->request = xreqStrToNum;
- DoJsr (paramPtr);
- return (long) paramPtr->outArgs[0];
- } /*- proc-end: StrToNum -*/
-
- pascal Boolean StrToBool (paramPtr, strPtr)
- XCmdBlockPtr paramPtr;
- Str31 *strPtr;
- {
- paramPtr->inArgs[0] = (long) strPtr;
- paramPtr->request = xreqStrToBool;
- DoJsr (paramPtr);
- return (Boolean) paramPtr->outArgs[0];
- } /*- proc-end: StrToBool -*/
-
- pascal void StrToExt (paramPtr, strPtr, myext)
- XCmdBlockPtr paramPtr;
- Str31 *strPtr;
- extended *myext;
- {
- paramPtr->inArgs[0] = (long) strPtr;
- paramPtr->inArgs[1] = (long) myext;
- paramPtr->request = xreqStrToExt;
- DoJsr (paramPtr);
- } /*- proc-end: StrToExt -*/
-
- pascal void LongToStr (paramPtr, posNum, mystr)
- XCmdBlockPtr paramPtr;
- long posNum;
- Str31 *mystr;
- {
- paramPtr->inArgs[0] = (long) posNum;
- paramPtr->inArgs[1] = (long) mystr;
- paramPtr->request = xreqLongToStr;
- DoJsr (paramPtr);
- } /*- proc-end: LongToStr -*/
-
- pascal void NumToStr (paramPtr, num, mystr)
- XCmdBlockPtr paramPtr;
- long num;
- Str31 *mystr;
- {
- paramPtr->inArgs[0] = (long) num;
- paramPtr->inArgs[1] = (long) mystr;
- paramPtr->request = xreqNumToStr;
- DoJsr (paramPtr);
- } /*- proc-end: NumToStr -*/
-
- pascal void NumToHex (paramPtr, num, nDigits, mystr)
- XCmdBlockPtr paramPtr;
- long num;
- short int nDigits;
- Str31 *mystr;
- {
- paramPtr->inArgs[0] = (long) num;
- paramPtr->inArgs[1] = (long) nDigits;
- paramPtr->inArgs[2] = (long) mystr;
- paramPtr->request = xreqNumToHex;
- DoJsr (paramPtr);
- } /*- proc-end: NumToHex -*/
-
- pascal void BoolToStr (paramPtr, bool, mystr)
- XCmdBlockPtr paramPtr;
- Boolean bool;
- Str31 *mystr;
- {
- paramPtr->inArgs[0] = (long) bool;
- paramPtr->inArgs[1] = (long) mystr;
- paramPtr->request = xreqBoolToStr;
- DoJsr (paramPtr);
- } /*- proc-end: BoolToStr -*/
-
- pascal void ExtToStr (paramPtr, myext, mystr)
- XCmdBlockPtr paramPtr;
- extended *myext;
- Str31 *mystr;
- {
- paramPtr->inArgs[0] = (long) myext;
- paramPtr->inArgs[1] = (long) mystr;
- paramPtr->request = xreqExtToStr;
- DoJsr (paramPtr);
- } /*- proc-end: ExtToStr -*/
-
- pascal Handle GetGlobal (paramPtr, globName)
- XCmdBlockPtr paramPtr;
- StringPtr globName;
- {
- paramPtr->inArgs[0] = (long) globName;
- paramPtr->request = xreqGetGlobal;
- DoJsr (paramPtr);
- return (Handle) paramPtr->outArgs[0];
- } /*- proc-end: GetGlobal -*/
-
- pascal void SetGlobal (paramPtr, globName, globValue)
- XCmdBlockPtr paramPtr;
- StringPtr globName;
- Handle globValue;
- {
- paramPtr->inArgs[0] = (long) globName;
- paramPtr->inArgs[1] = (long) globValue;
- paramPtr->request = xreqSetGlobal;
- DoJsr (paramPtr);
- } /*- proc-end: SetGlobal -*/
-
- pascal void SetFieldByName (paramPtr, cardFieldFlag, fieldName, fieldVal)
- XCmdBlockPtr paramPtr;
- Boolean cardFieldFlag;
- StringPtr fieldName;
- Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long) cardFieldFlag;
- paramPtr->inArgs[1] = (long) fieldName;
- paramPtr->inArgs[2] = (long) fieldVal;
- paramPtr->request = xreqSetFieldByName;
- DoJsr (paramPtr);
- } /*- proc-end: SetFieldByName -*/
-
- pascal void SetFieldByNum (paramPtr, cardFieldFlag, fieldNum, fieldVal)
- XCmdBlockPtr paramPtr;
- Boolean cardFieldFlag;
- short int fieldNum;
- Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long) cardFieldFlag;
- paramPtr->inArgs[1] = (long) fieldNum;
- paramPtr->inArgs[2] = (long) fieldVal;
- paramPtr->request = xreqSetFieldByNum;
- DoJsr (paramPtr);
- } /*- proc-end: SetFieldByNum -*/
-
- pascal void SetFieldByID (paramPtr, cardFieldFlag, fieldID, fieldVal)
- XCmdBlockPtr paramPtr;
- Boolean cardFieldFlag;
- short int fieldID;
- Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long) cardFieldFlag;
- paramPtr->inArgs[1] = (long) fieldID;
- paramPtr->inArgs[2] = (long) fieldVal;
- paramPtr->request = xreqSetFieldByID;
- DoJsr (paramPtr);
- } /*- proc-end: SetFieldByID -*/
-
- pascal Boolean StringEqual (paramPtr, str1, str2)
- XCmdBlockPtr paramPtr;
- Str31 *str1, *str2;
- {
- paramPtr->inArgs[0] = (long) str1;
- paramPtr->inArgs[1] = (long) str2;
- paramPtr->request = xreqStringEqual;
- DoJsr (paramPtr);
- return (Boolean) paramPtr->outArgs[0];
- } /*- proc-end: StringEqual -*/
-
- pascal void ReturnToPas (paramPtr, zeroStr, pasStr)
- XCmdBlockPtr paramPtr;
- Ptr zeroStr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long) zeroStr;
- paramPtr->inArgs[1] = (long) pasStr;
- paramPtr->request = xreqReturnToPas;
- DoJsr (paramPtr);
- } /*- proc-end: ReturnToPas -*/
-
- pascal void ScanToReturn (paramPtr, scanHndl)
- XCmdBlockPtr paramPtr;
- Ptr *scanHndl;
- {
- paramPtr->inArgs[0] = (long) scanHndl;
- paramPtr->request = xreqScanToReturn;
- DoJsr (paramPtr);
- } /*- proc-end: ScanToReturn -*/
-
- pascal void ScanToZero (paramPtr, scanHndl)
- XCmdBlockPtr paramPtr;
- Ptr *scanHndl;
- {
- paramPtr->inArgs[0] = (long) scanHndl;
- paramPtr->request = xreqScanToZero;
- DoJsr (paramPtr);
- } /*- proc-end: ScanToZero -*/
-
- pascal void DoJsr (paramPtr)
- XCmdBlockPtr paramPtr;
- { /*- This is THINK-C implementation -*/
-
- CallPascal (paramPtr->entryPoint);
-
- } /*- proc-end: DoJsr -*/
-